#!/bin/bash
# scripts/init_db.sh - 数据库初始化脚本

set -e

# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'

log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }

# 数据库文件路径
DB_PATH="/opt/jfastfiler/data/filemanager.db"
SQL_SCRIPT="/opt/jfastfiler/scripts/init.sql"

# 检查SQLite是否安装
if ! command -v sqlite3 &> /dev/null; then
    log_error "SQLite3未安装"
    exit 1
fi

# 创建数据目录
mkdir -p /opt/jfastfiler/data

# 初始化数据库
log_info "初始化数据库..."

# 运行SQL初始化脚本
if [ -f "$SQL_SCRIPT" ]; then
    sqlite3 "$DB_PATH" < "$SQL_SCRIPT"
    
    if [ $? -eq 0 ]; then
        log_info "数据库初始化成功"
        
        # 设置数据库文件权限
        chown jfastfiler:jfastfiler "$DB_PATH"
        chmod 660 "$DB_PATH"
        chown jfastfiler:jfastfiler /opt/jfastfiler/data
        chmod 750 /opt/jfastfiler/data
        
        log_info "数据库文件权限设置完成"
    else
        log_error "数据库初始化失败"
        exit 1
    fi
else
    log_error "SQL初始化脚本未找到: $SQL_SCRIPT"
    exit 1
fi

# 验证数据库
if [ -f "$DB_PATH" ]; then
    DB_SIZE=$(stat -c%s "$DB_PATH")
    log_info "数据库创建成功，大小: ${DB_SIZE} 字节"
    
    # 验证表结构
    TABLE_COUNT=$(sqlite3 "$DB_PATH" "SELECT count(*) FROM sqlite_master WHERE type='table';")
    log_info "数据库表数量: $TABLE_COUNT"
else
    log_error "数据库文件未创建"
    exit 1
fi

log_info "数据库初始化完成"